/**
 * @class Extmx.StatusBarPanel
 * Componente que encapsula un status bar para mostrar mensajes al usuario junto con 
 * progressbar para cuando se encuentra diferentes estados "load" , "listo", "guardando", "guardado", "error"
 *<br>
 * 
 * @extends Ext.Panel
 * @xtype mxstatusbarpanel
 * @autor Ing. Josué Hernández Gómez<br>
 *        joshua@extjs.mx<br>
 *        http://www.joshua.com.mx
 * @fecha 9 de febrero 2010. Oaxaca, M&eacute;xico
 */
 Ext.namespace('Extmx.StatusBarPanel');
 
 Extmx.StatusBarPanel = Ext.extend(Ext.Panel,{

    layout:"fit",
	border:false,

	/**
	 * @cfg String conStatusBar Si esta en falso no despliega la barra de estado. Por defecto esta en true
	 */
	conStatusBar: true,
	
	/**
     * Barra de estato que se muestra abajo del panel para mostrar los diferentes estados
     * @property barraEstado
     * @type Extmx.StatusBar
     */
 	initComponent : function(){
		if(this.conStatusBar){
			if(Ext.isEmpty(this.barraEstado) ){
				this.barraEstado=new Extmx.StatusBar();
	        }
	 		var config = {			
				bbar:this.barraEstado
	 		}; 					
			Ext.apply(this,config);
		}
		Extmx.StatusBarPanel.superclass.initComponent.call(this,arguments);
 	},
 	
	/**
     * Estable el componente en estado load. Muestra el icono y el progressbar
     * @method cargando
     * @param {String} msg (optional) Mensaje de espera que se desea mostrar. Si no se 
     * recibe por defecto tiene 'Por favor espere...'
     */	
 	cargando : function(msg){
		this.barraEstado.cargando(msg);			 						
 	},
 	
	/**
     * Establece el componente en estado v&aacute;lido. 
     * @method listo
     * @param {String} msg (optional) Mensaje se desea mostrar. Ver {@link #defaultText}
     * @param {Boolean} limpiar (optional) Si se env&iacute;a true, limpiar&aacute; el mensaje enviado despu&eacute; de un determinado
	 * tiempo especificado por {@link #autoClear}. Por defecto en true
     */	
 	listo : function(msg,t){
		this.barraEstado.listo(msg,t);	
 	},
	
	/**
     * Establece el componente en estado "Guardando. Muestra el progressbar y el &iacute;cono es x-status-saving
     * @method guardando
     * @param {String} msg (optional) Mensaje se desea mostrar. Por defecto 'Guardando, porfavor espere...'
     */	
 	guardando : function(msg){
		this.barraEstado.guardando(msg);			
 	},
	
	/**
     * Establece el componente en estado 'Agregado'. Esconde el progressbar
     * @method agregado
     * @param {String} msg (optional) Mensaje se desea mostrar. Por defecto 'Agregado'
     * @param {Boolean} limpiar (optional) Si se env&iacute;a true, limpiar&aacute; el mensaje enviado despu&eacute; de un determinado
	 * tiempo especificado por {@link #autoClear}. Por defecto en true
     */	
 	agregado : function(msg,t){
        this.barraEstado.agregado(msg,t);				
 	},
	
	/**
     * Establece el componente en estado "guardado". Esconde el progressbar
     * @method guardado
     * @param {String} msg (optional) Mensaje se desea mostrar. Por defecto 'Guardado'
     * @param {Boolean} limpiar (optional) Si se env&iacute;a true, limpiar&aacute; el mensaje enviado despu&eacute; de un determinado
	 * tiempo especificado por {@link #autoClear}. Por defecto en true
     */		
 	guardado : function(msg){
		this.barraEstado.guardado(msg);	
 	},
	
	/**
     * Estable el componente en estado inv&aacute;lido. Muestra las letras en rojo y el &iacute;cono 'x-status-error'
     * @method error
     * @param {String} msg  Mensaje se desea mostrar.
     * @param {Boolean} limpiar (optional) Si se env&iacute;a true, limpiar&aacute; el mensaje enviado despu&eacute; de un determinado
	 * tiempo especificado por {@link #autoClear}. Por defecto en false
     */
 	error : function(msg,t){
		this.barraEstado.error(msg,t);	 		
 	}
 }); 
Ext.reg('mxstatusbarpanel',Extmx.StatusBar);
 